package com.benshou.bsoa.utils;

import com.aliyun.dingtalkoauth2_1_0.Client;
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/*
 * 生成用于访问钉钉接口的access_token
 * access_token是调用钉钉接口的凭证，开发者需要使用access_token来调用钉钉开放平台的API接口。
 * access_token的有效期为2小时，过期后需要重新获取。
 * access_token的获取方式为：使用企业的corpid和appsecret来获取access_token。
 * 2025-04-27
 */

@Component
public class CreateAccessTokenUtil {
    @Value("${dingding.benshou.app_key}")
    private String APP_KEY;

    @Value("${dingding.benshou.app_secret}")
    private String APP_SECRET;

    public String getToken() throws Exception {
        // 创建客户端
        Client client = createClient();

        // 设置请求参数
        GetAccessTokenRequest request = new GetAccessTokenRequest()
                .setAppKey(APP_KEY)
                .setAppSecret(APP_SECRET);

        return client.getAccessToken(request).getBody().getAccessToken();
    }

    public Client createClient() throws Exception {
        Config config = new Config();
        config.protocol = "https";
        config.regionId = "central";
        return new Client(config);
    }
}
